perm filename DFTP.MRC[UP,DOC]8  blob 
sn#285534 filedate 1977-05-29 generic text, type C, neo UTF8
 
COMMENT ⊗   VALID 00024 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002
C00004 00003
C00007 00004
C00011 00005
C00015 00006
C00018 00007
C00021 00008
C00023 00009
C00026 00010
C00029 00011
C00032 00012
C00035 00013
C00038 00014
C00041 00015
C00044 00016
C00047 00017
C00050 00018
C00053 00019
C00055 00020
C00056 00021
C00058 00022
C00061 00023
C00064 00024	
C00065 ENDMK
C⊗;
                 Computer Corporation of America
                      Technical Bulletin 1
                        DFTP User's Guide
                            May 1977
                           W. R. Bush
                            Overview
     The Datacomputer is a shared large-scale data  base  utility
offering  data  storage  and  data  management  services to other
computers on the Arpanet.  The system is a  centralized  facility
for archiving data, for sharing data among various network hosts,
and  for  providing inexpensive on-line storage for sites needing
to  supplement  their  local  capability.   The  Datacomputer  is
implemented  on  dedicated  hardware  and  comprises  a  separate
computing system specialized for data management.  The system can
be viewed logically as a closed box shared by  multiple  external
processors   and   accessed   in   a   standard  notation  called
Datalanguage.
     The Datacomputer File Transfer  Program  (DFTP)  provides  a
convenient  method  for storing and retrieving local files on the
Datacomputer  via  the  Arpanet.   DFTP  translates  simple  user
commands  into  Datalanguage,  sends the Datalanguage and data to
the Datacomputer, processes the messages and data  returned  from
the Datacomputer, and notifies the user of the results.
                          The Directory
     The DFTP Datacomputer directory is a tree, with  site  nodes
beneath  a  common  root node, user nodes beneath site nodes, and
optional subdirectories of arbitrary depth  and  breadth  beneath
                              - 1 -
user  nodes.   Files  are  stored  in  special  leaf nodes called
<FILES> nodes.  Pictorially,
                       <ROOT>
                       /    \
                   SITE      SITE    ...
                  /    \
              USER      USER    ...
             /    \
       <FILES>     SUBDIRECTORY    ...
                  /            \
            <FILES>             SUBDIRECTORY    ...
                                            \
                                            <FILES>    ...
The <FILES> nodes are the repositories of  all  data.   To  avoid
ambiguity,  there can be only one <FILES> node directly under any
given user or subdirectory node.
     There  are  two  basic  types  of  commands  --  those  that
reference  only  nodes  and  those  that reference files within a
<FILES> node.  Node level commands are used for manipulating  the
               ←←←← ←←←←← ←←←←←←←←
global  directory  structure of sites, users, and subdirectories.
A node level command takes a node path (described below)  as  its
                             ←←←← ←←←←
argument.   File level commands are used for storing, retrieving,
            ←←←← ←←←←← ←←←←←←←←
and modifying files within a <FILES> node.  A file level  command
takes  as  its  argument  a file name (described below) or a node
                            ←←←← ←←←←
path followed by a file name, called a file path (for referencing
                                       ←←←← ←←←←
files under nodes other than the defaults used by DFTP).
                        Referencing Nodes
     The mechanism for referencing a node, called a node path, is
                                                    ←←←← ←←←←
a means of specifying a path  through  the  directory  tree.   It
consists of a context and a node list.
              ←←←←←←←       ←←←← ←←←←
                              - 2 -
     Contexts  provide  convenient  anchoring  points  for   node
     ←←←←←←←←
references.   The  three  contexts  are top, attach, and connect,
                                        ←←←  ←←←←←←      ←←←←←←←
indicated by '<<<', '<<', and '<' respectively.
     The top context provides an absolute starting point for node
references.  It anchors a reference to the highest fixed star  in
the  directory  firmament  --  the  <ROOT>  node.  One may always
reference any node in the directory by indicating the top context
and  then  listing  all  the   nodes   (the   site,   user,   and
subdirectories) between the <ROOT> node and the node of interest.
The  context  also  allows  reference to nodes higher in the tree
(sites and users) than the other contexts.
     The attach context is set, automatically at the beginning of
a session by DFTP, to be the user's user node.   Thus  references
to  subdirectories, if prefaced with the attach context, need not
include the site and user (as compared  with  the  top  context).
The  context  can  be  changed  by the ATTACH command, usually to
another user.  The attach context provides a fixed point above  a
user's  subdirectories  for manipulating and choosing among them.
     The connect context is set, automatically at  the  beginning
of  a  session by DFTP, to be the same as the attach context.  It
is conceptually similar to the attach context in being a  movable
point  in  the  directory,  but  it is usually lower in the tree,
usually a  subdirectory.   It  can  be  changed  by  the  CONNECT
command,  usually  to  another  subdirectory.   It is usually the
point from which files are referenced.
     Contexts need not be  explicitly  given  by  the  user  when
specifying  a  node  path.   For the default contexts provided by
                              - 3 -
DFTP see the Command Input section.  Note also that a context can
be a complete node  reference.   A  node  may  be  referenced  by
specifying  only  a context (without a node list) if that context
has been previously set to that node.  For  example,  one's  user
node may be referenced via the attach context.
     A node  list  consists  of  a   sequence   of   node   names
       ←←←←  ←←←←
(consecutive  levels  in the tree) separated by '>'s.  A password
may be necessary in acquiring access privileges at  a  particular
node,  in  which  case  the  node name is followed by ':' and the
password.  Sets of nodes can be referenced  --  all  nodes  at  a
particular level are indicated by '*', and all inferior nodes are
designated  by  '**' (which can occur only at the end of the node
list).
     For example:
          <<<CCA>HACKER:DINKUP>WALDO
Starting at  the  top  context,  the  node  path  references  the
subdirectory  WALDO  under  user  HACKER  at  site  CCA (with the
password DINKUP supplied to gain access to HACKER).
          <<WALDO>**
Starting at the attach context,  the  node  path  references  the
subdirectory  WALDO  and  all inferior nodes.  Note that WALDO is
included -- the REMOVE command, for  example,  would  delete  the
node WALDO as well as its inferiors.
                              - 4 -
                        Referencing Files
     File names have the same form as TENEX file names:  a  name,
     ←←←← ←←←←←
an  optional extension, and an optional version number.  The name
is separated from the extension by a period,  and  the  extension
from  the  version  number  by  a  semicolon.   File  sets may be
indicated by an asterisk in any or all of the fields.
     Version numbers allow unambiguous reference  of  files  that
have  the  same  name  and  extension.   DFTP assigns each file a
version number which is unrelated to its TENEX or TOPS-20 version
number.  Later  versions  of  a  file  with  the  same  name  and
extension  receive  higher version numbers.  If the user does not
explicitly supply a version number  in  referencing  an  existing
file, DFTP provides a default.
     All  commands  that  accept  a  file  name  as   input   can
alternatively  accept  a file path, which consists of a node path
                         ←←←← ←←←←
followed by a file name.  The two parts  are  separated  by  '>',
unless  the node path is only a context, in which case the '>' is
omitted.
     Note that the user never specifies a <FILES> node explicitly
in referencing a file.  If a file path is given, DFTP expands the
reference to refer to the given file in the  <FILES>  node  under
the  given  node.  If only a file name is given, DFTP expands the
reference to refer to the given file in the  <FILES>  node  under
the default context node.
     For example:
                              - 5 -
          MAIL.TXT
The  file  name  references the file MAIL.TXT in the <FILES> node
under the connect context.
          <*.SAV;*
The file name references all  versions  of  all  files  with  the
extension SAV in the <FILES> node under the connect context.
          <<MACROS>COMMON>SYSMAC.MAC
Starting at the attach context (presumably a user node), the file
path references the file SYSMAC.MAC in the <FILES> node under the
COMMON subdirectory of the MACROS subdirectory.
                          Command Input
     DFTP command input is similar to  TENEX  and  TOPS-20,  with
command  recognition  and  a  combination  of  TENEX  and TOPS-20
editing controls.  In particular,
          <control-A> and <rubout> delete a character,
          <control-R> retypes a line,
          <control-U> and <control-X> delete a line,
          <escape> and <space> are separators, and
          <carriage return>, <line feed>
                    and <end of line> are terminators.
     Node-oriented commands take node paths as  their  arguments.
File-oriented  commands  take  file  names or file paths as their
arguments.
                              - 6 -
     The connect context is   the   default   context   for   all
commands except ATTACH, the default for which is the top context,
and  BIG and CONNECT, which have as their defaults the the attach
context.
     Many commands have  default  arguments  and  trailers  which
are invoked  by  giving  a  space  or  escape  as the argument or
argument terminator.   The  default  argument  is  '<<'  for  the
CONNECT  command,  '<'  for  EXPUNGE,   and  '**'  for  LIST  and
REMOVE,  which  is also the default trailer.  For DIRECTORY, GET,
PUT, DELETE, UNDELETE, and EXAMINE   the   default  argument  and
trailer  (after  a  '>')  is  '*.*;*'.   The  default  option for
DIRECTORY and LIST is TERSE.
                     Node-Oriented Commands
     The ATTACH command sets  the  attach  context  (and  connect
context) and initiates Datacomputer accounting functions.
     The BIG command is used for indicating that  a  subdirectory
is  to be a large one.  It creates the subdirectory node given as
its argument if the node does not already  exist,  creates  under
that  node  an  expanded  <FILES>  node  (twice  the  size of the
standard one, with the names of the  files  inverted  for  faster
retrieval),  and  sets the user's connect context to be the given
subdirectory node.
     The CONNECT command sets the connect  context  (and  creates
new subdirectories).
                              - 7 -
     The EXPUNGE command removes files marked as deleted from the
<FILES>  node  under  the node given as the command argument.  If
the <FILES> node contains no files (deleted or undeleted)  it  is
removed from the Datacomputer directory.
     The LIST command lists  Datacomputer  nodes  (sites,  users,
subdirectories,  and  <FILES>)  and  information about them.  The
information displayed by the VERBOSE option comes  directly  from
the Datacomputer.
     The REMOVE  command  removes  nodes  from  the  Datacomputer
directory.   They  must  either have no inferior nodes (including
<FILES> nodes), or be part of a node set that  includes  inferior
nodes  ('**').   Data  stored  under  removed  nodes will also be
deleted.
                     File-Oriented Commands
     File deletion operates  as  with  TENEX  and  TOPS-20.   The
DELETE  command  marks  files  as deleted, but does not eliminate
them.  They can be listed via the VERBOSE option of the DIRECTORY
command, and their deleted status can be changed by the  UNDELETE
command.  The  removal  of  deleted  files  is  deferred until an
EXPUNGE is performed on the <FILES>  node  containing  them.  The
default version number is the lowest undeleted, unless a file set
is  indicated, in which case all versions in the set are deleted.
     The DIRECTORY command  lists  files  and  information  about
them.  The VERBOSE option lists deleted and undeleted files (with
                              - 8 -
deleted  ones indicated by 'D' after the name), the date and time
created (for TOPS-10 and ITS  sites),  the  date  and  time  last
written  (for TENEX and TOPS-20 sites), the date and time stored,
and the size.  For files stored from TENEX and TOPS-20 sites  the
size  information  is in the form <number of bytes>(<byte size>).
For files stored from TOPS-10 and ITS sites the information is in
the form <number of  36  bit  words>(-<data  mode)).   The  TERSE
option lists undeleted files and their sizes (in the same form as
the  VERBOSE  option).   The  DELETED option is the equivalent of
TERSE for deleted files.   The  default  version  number  is  the
highest  undeleted, unless a file set is indicated, in which case
information for all versions in the set is listed.
     The  EXAMINE  command  lists  on  the  user's  terminal  the
contents  of  the  files  specified as the command argument.  The
command also takes as an argument the  number  of  lines  between
'More?'  prompts,  which  are  used  to  terminate  listing.  The
default number of lines is 20 or, if the EXAMINE command has been
invoked previously, the number given then.   The  listing  of  an
individual  file  may  be terminated by answering in the negative
the 'More?' prompt, and the listing of the current and  remaining
files  may  be  aborted  by  answering  the prompt with 'A'.  The
default version number is the highest undeleted,  unless  a  file
set  is  indicated,  in  which  case  all versions in the set are
listed.
     The GET and PUT commands retrieve and store local disk files
on the Datacomputer. Files of any type (text or binary image, for
example) can be stored.   If  a  synonym  is  not  supplied,  the
                              - 9 -
Datacomputer  file  name  is used as the local file name.  If the
first argument to either command is completed with an escape or a
space, the synonym  option  is  invoked  and  the  commands  then
operate in the form
          GET Datacomputer file [AS] local file, and
          PUT local file [AS] Datacomputer file.
For  the  GET  command  the default version number is the highest
undeleted, unless a file set is  indicated,  in  which  case  all
versions  of  the  set  are  retrieved.  The PUT command sets the
version number of the file being stored to be  one  greater  than
the  highest  version  of  existing  files with the same name and
extension.  Note that a file set indicated in any file name field
is treated as if all existing files had the same field -- storing
*.* results in the stored files  receiving  version  numbers  one
greater  than  the  highest  version number found in any existing
file.
     The RENUMBER command changes a file's version number.  It is
the only mechanism available to the user  for  affecting  version
numbers.   The user specifies the file to be changed, after which
DFTP  asks  for  the  new  version  number.   File  sets  may  be
specified,  but only if a version number is explicitly given with
the file set.  The default  old  version  number  is  the  lowest
undeleted.  The default new version number is 1.
     The UNDELETE command rescinds a file's deleted status.   The
default  version number is the highest deleted, unless a file set
is  indicated,  in  which  case  all  versions  in  the  set  are
undeleted.
                             - 10 -
                     Miscellaneous Commands
     The   SHOW-DATALANGUAGE   and    NO-DATALANGUAGE    commands
respectively  allow and inhibit the output to the user's terminal
of the messages sent to and received from the Datacomputer.
     Data transfer rates are calculated and  given  to  the  user
when   the   TIME-TRANSFERS   command   has  been  invoked.   The
calculations are avoided with the UNTIME-TRANSFERS command.
     QUIT   exits   gracefully   from   DFTP,   closing   network
connections.
                            Responses
     There are three types of messages that DFTP gives the  user.
Comments    surrounded   by   square   brackets   are   primarily
informational  messages,  and  are  never  errors.    Parentheses
enclose non-fatal errors and informational Datacomputer messages,
such  as  '(LEBAR2:  ERROR:  NO  SUCH  FILE)',  resulting from an
attempt to DELETE a nonexistent file, and '(SXPF9:  STAGING  DATA
FOR FILE = DFTP.CCA.DFTP.<FILES>)', indicating that data is being
moved  from  tertiary  mass  memory  to  secondary buffer memory.
These messages come directly from the Datacomputer, indicated  by
the  name  and  colon  at  the  head of the message.  Fatal error
messages are surrounded by question marks, and  of  course  never
occur.
                             - 11 -
                     Site Dependent Features
     For  the  TENEX  and  TOPS-20  versions,  the  EXEC  command
provides  the  user  with an inferior exec, which is flushed when
the user returns to DFTP.  Where a local file  name  is  possible
(in  the GET and PUT commands) an initial space or escape invokes
name recognition, indicated by a '>' prompt.  A  <control-O>  can
be  used to halt the output from the LIST and DIRECTORY commands.
     For the TOPS-10 version, the LOCAL-DIRECTORY  command  lists
the  user's  local  file  directory.  The LOCAL-STRUCTURE command
sets the file structure (e.g. DSKC:), and the LOCAL-USER  command
sets  the  project and programmer.  Both commands affect the GET,
PUT, and LOCAL-DIRECTORY commands.
     For the ITS  version  the  LOCAL-CONNECT  command  specifies
which  SNAME  (local  directory)  is  used  for  the  GET and PUT
commands.  If a carriage return is typed with  no  argument,  the
user's  default  SNAME  is used.  The TERSE command (unset by the
VERBOSE command) suppresses informational  Datacomputer  messages
(such   as   the   staging   message   below),   and  performs  a
NO-DATALANGUAGE and an UNTIME-TRANSFERS.
                         Access Control
     DFTP access control uses a subset of the  full  Datacomputer
mechanism.   A  complete  discussion  of  Datacomputer  privilege
facilities can be found in the current Datacomputer User  Manual.
                             - 12 -
     Access privileges are defined in privilege  blocks  attached
to  nodes  in  the  directory.   A  node  may  have any number of
privilege blocks attached to it.  Each block consists of a set of
privileges and a class of users to whom that set  applies.   DFTP
provides two classes of access, control and read.  Control allows
users  to  ATTACH to a node, CREATE and ALLOCATE nodes below that
node, CHANGE privileges at and below that node, and read,  write,
and  delete  data stored below that node.  Read only allows users
to ATTACH to a node and read data stored  under  it.   All  other
users are denied everything but the ability to LIST nodes.  Users
are  identified either by passwords, or by their network identity
(defined by the host  and  socket  from  which  they  access  the
Datacomputer),  or  both.   Some  systems  enforce  assignment of
socket numbers according to the user's identity on  that  system,
thus providing convenient automatic identification to DFTP.
     When a user attemps to access a node,  or  manipulate  nodes
and  data  under  it, the Datacomputer compares the user with the
user classes identified in privilege blocks  on  that  node,  and
assigns the corresponding class of privileges.  If no set matches
the  user,  no  privileges are allowed.  the privilege blocks are
scanned in the order of creation, and if a user matches more than
one block, the first takes effect.  Access controls  are  set  by
the  CHANGE  and  CREATE  commands,  described  in  the following
section.
                             - 13 -
                       Privileged Commands
     Privileged  commands  are  made  available  via  the  ENABLE
command.   Its action is marked by a change in the command prompt
from '*' to '!'.   The  DISABLE  command  undoes  the  effect  of
ENABLE.
     The ALLOCATE command is used to set the  maximum  number  of
megabits  a  user  may  consume.   It  can  also  be  used to set
subdirectory  limits.   Allocations  are  made  and  reported  in
megabits  -- 1,013,760 bits to be precise, the size of a block on
the Datacomputer's tertiary memory.  A megabit is  roughly  equal
to 55 512-word pages, or 220 128-word blocks.
     The CHANGE command redefines the access control  information
for  a  given  node.   It  deletes  all  existing  access control
information  (privilege   blocks),   then   builds   new   blocks
interactively  with  the  user.  The PROTECTION subcommand of the
LIST command can be used  to  examine  the  privilege  blocks  of
nodes.
     The CREATE command is used to create a node for a new  user.
After  the node has been created, the access control is specified
as with the CHANGE command.
     The LINK command allows the user to send Datalanguage to the
Datacomputer.  Each line of  input,  prompted  by  '>',  is  sent
directly  to  the  Datacomputer,  without any processing by DFTP.
Return to DFTP command input is  achieved  by  inputting  a  null
line.
                             - 14 -
               Examples Using Privileged Commands
;Attach to a node.
; (gain control at site CCA by supplying the proper password)
*ATTACH <<<CCA:
*ENABLE
;Create a user and privileges.
; (the first privilege allows creation and deletion for
;   local user HACKER upon supplying the password "ETAOIN")
; (the second privilege allows creation and deletion for
;   anyone from Harvard (host 11) upon supplying the password "SHRDLU")
; (the third privilege allows anyone read)
!CREATE HACKER
 [OK]
 Add a new privilege? Yes
  Allow control? Yes
  Restrict via network? Yes
   Restrict via local host? Yes
   Restrict via user? Yes
    User: HACKER
  Restrict via password? Yes
   Password: ETAOIN
  [OK]
 Add a new privilege? Yes
  Allow control? Yes
  Restrict via network? Yes
   Restrict via local host? No
    Site: 11
   Restrict via user? No
  Restrict via password? Yes
   Password: SHRDLU
  [OK]
 Add a new privilege? Yes
  Allow control? No
  Restrict via network? No
  Restrict via password? No
  [OK]
 Add a new privilege? No
;List the privileges.
; (in Datacomputer format (passwords are never listed))
!LIST HACKER
!!PROTECTION
    CCA
        HACKER
            ] (1),U=**,H=31,S=12582928,G=CLWRA
            ] (2),U=**,H=9,S=ANY,G=CLWRA
            ] (3),U=**,H=ANY,S=ANY,G=LR
                             - 15 -
;Replace the privileges.
; (the first privilege allows creation and deletion for
;   local user HACKER)
; (the second privilege allows anyone read
;   upon supplying the password "WALDO")
; (the "[OK]" indicates that the previous privileges have been deleted)
!CHANGE HACKER
 [OK]
 Add a new privilege? Yes
  Allow control? Yes
  Restrict via network? Yes
   Restrict via local host? Yes
   Restrict via user? Yes
    User: HACKER
  Restrict via password? No
  [OK]
 Add a new privilege? Yes
  Allow control? No
  Restrict via network? No
  Restrict via password? Yes
   Password: WALDO
  [OK]
 Add a new privilege? No
;List the privileges.
!LIST HACKER
!!PROTECTION
    CCA
        HACKER
            ] (1),U=**,H=31,S=12582928,G=CLWRA
            ] (2),U=**,H=ANY,S=ANY,G=LR
;List all information.
; ("MX-U" indicates the maximum allocation in megabits)
!LIST HACKER
!!VERBOSE
    CCA
        HACKER
            ] MX-U=10.00 CHRG=0.00
            ] IN-N=0 IN-F=0
            ] CREA=761101052805
;Change the allocation.
; (decrease the allocation from 10 megabits to 2 megabits)
!ALLOCATE HACKER
 [Megabits:2]
;List all information.
!LIST HACKER
!!VERBOSE
    CCA
        HACKER
            ] MX-U=2.00 CHRG=0.00
            ] IN-N=0 IN-F=0
            ] CREA=761101052805
                             - 16 -
                         Command Summary
ATTACH <node path>
BIG <node path>
CONNECT <node path> (1)
DELETE <file path> (4) (5)
DIRECTORY <file path> (4) (6) (10)
        DELETED
        TERSE
        VERBOSE
EXAMINE <file path> (4) (6)
        Lines per page: <decimal integer> (8)
        More? <Y or N or A>
EXPUNGE <node path> (2)
GET (RETRIEVE) <file path> [local file name synonym] (4) (6) (11)
LIST <node path> (3) (10)
        TERSE
        VERBOSE
NO-DATALANGUAGE
PUT (STORE) <file path> [remote file path synonym] (4) (11)
QUIT
REMOVE <node path> (3)
RENUMBER <file path> (5)
        Version number: <decimal integer> (9)
SHOW-DATALANGUAGE
TIME-TRANSFERS
UNDELETE <file path> (4) (7)
UNTIME-TRANSFERS
                             - 17 -
                 Site Dependent Command Summary
EXEC (12)
LOCAL-DIRECTORY (13)
LOCAL-STRUCTURE <string> (13)
LOCAL-USER (13)
        Project: <octal integer> (14)
        Programmmer: <octal integer> (14)
LOCAL-CONNECT <string> (15)
TERSE (15)
VERBOSE (15)
                             - 18 -
                   Privileged Command Summary
ALLOCATE <node path>
    Megabits: <decimal integer>
CHANGE <node path>
    Add a new privilege? <Y or N>
        Allow write? <Y or N>
        Restrict via network? <Y or N>
            Restrict via local host? <Y or N>
                Host number (octal): <octal integer>
                  (if host not local)
            Restrict via user? <Y or N>
                Socket number (octal): <octal integer>
                  (if user restricted and host not local)
                User: <user name> (16)
                  (if user restricted and host local)
        Restrict via password? <Y or N>
            Password: <string>
CREATE <node path>
    (see CHANGE)
DISABLE
ENABLE
LINK (17)
LIST <node path>
    PROTECTION
                             - 19 -
                          Summary Notes
     Required input is indicated by angle brackets.
     Optional input is indicated by square brackets.
     The connect context is   the   default   context   for   all
          commands  except  ATTACH,  the default for which is the
          top context, and BIG and CONNECT, which have  as  their
          defaults the the attach context.
     (1) The default argument is <<.
     (2) The default argument is <.
     (3) The default argument (and trailer) is **.
     (4) The default argument (and trailer) is *.*;*.
     (5) The default version is the lowest undeleted.
     (6) The default version is the highest undeleted.
     (7) The default version is the highest deleted.
     (8) The default page size is 20 or the last size input.
     (9) The default version number is 1.
     (10) On TENEX and TOPS-20 sites, a  <control-O>  will  abort
          output.
     (11) On TENEX and  TOPS-20  sites,  an  initial  <space>  or
          <escape>  as  file  name  input invokes local file name
          recognition.
     (12) Available on TENEX and TOPS-20 sites only.
     (13) Available on TOPS-10 sites only.
     (14) The argument is a <string> on SAIL sites.
     (15) Available on ITS sites only.
     (16) A directory name if  TENEX  or  TOPS-20,  a  programmer
          number if TOPS-10 (not used on SAIL or ITS).
     (17) A null input line returns the user to command mode.
                             - 20 -
                              Paths
<node path> :: =  <context>
                | <node list>
                | **
                | <context> **
                | <context> <node list>
                | <context> <node list> > **
                                        ←
                | <node list> > **
                              ←
<context> ::=     <             (connect context)
                  ←
                | <<            (attach context)
                  ←←
                | <<<           (top context)
                  ←←←
<node list> ::=   <node>
                | <node> > <node list>
                         ←
<node> ::=        <name>
                | <name> : <password>
                | *
<file path> ::=   <file name>
                | <context> <file name>
                | <node list> > <file name>
                              ←
                | <context> <node list> > <file name>
                                        ←
<file name> ::=   <file>
                | <file> .
                | <file> . <extension>
                | <file> ; <version>
                | <file> . ; <version>
                | <file> . <extension> ; <version>
<file> ::= <name> | *
<extension> ::= <name> | *
<version> ::= <number> | *
Notes:
     Underscored  angle  brackets  are  literal  characters   and
          accepted by DFTP as such.
     Any printing ASCII characters except <, >, ., :,  *,  ?,  ',
          and " may be used in a <name>.
     Any printing ASCII characters (plus space) except >,  .,  ',
          and " may be used in a <password>.
                             - 21 -